#include "log.h"
#include "app_common.h"
#include "unistd.h"
#include <pthread.h>
#include <stdlib.h>
// // 计算某个数的平方
// static int calc_sqr(int num)
// {
// 	sleep(1);
// 	return num * num;
// }

static void *calc_sqr_fsync(void *arg)
{
	sleep(1);
	// 强转为 int *
	int *num = (int *)arg;
	// 解引用取值
	int a = *num;
	// 求平方
	int sqr = a * a;
	// 声明一个新指针
	int *result = (int *)malloc(sizeof(int));
	// 把指针指向计算结果
	*result = sqr;
	return (void *)result;
}

int main(int argc, char const *argv[])
{
	int num[5] = {1, 2, 3, 4, 5};
	int result[5] = {0};
	int sum = 0;
	// 计算每个值的平方
	long start = app_common_getCurrentTime();
	pthread_t thread_id[5];

	for (int i = 0; i < 5; i++)
	{
		// result[i]= calc_sqr(num[i]);
		pthread_create(&thread_id[i], NULL, calc_sqr_fsync, &num[i]);
		// 在这join可以吗 不行
	}

	for (size_t i = 0; i < 5; i++)
	{ // 准备一个int * 空指针
		void *result_p;
		pthread_join(thread_id[i], &result_p); // 等待计算结果
		int *result_int_p = (int *)result_p;   // 强转类型
		result[i] = *result_int_p;			   // 解引用取值
	}

	for (int i = 0; i < 5; i++)
	{
		sum += result[i];
	}
	long end = app_common_getCurrentTime();
	printf("time=%ld\n", end - start);
	printf("sum=%d\n", sum);

	return 0;
}